package com.cari.oa.service;

import java.util.ArrayList;
import java.util.List;

import javax.annotation.Resource;

import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import com.cari.oa.dao.BaseDao;
import com.cari.oa.dao.SoftBugDao;
import com.cari.oa.domain.SoftBugEntity;
import com.cari.oa.domain.SysDictItemEntity;

@Service
@Transactional(rollbackFor = Exception.class)
public class SoftBugService extends BaseService<SoftBugEntity> {
	
	@Resource
	private  SoftBugDao  softBugDao;

	@Override
	public BaseDao<SoftBugEntity> getDao() {
		return softBugDao;
	}

	/**
    * Title: getPage
    * Description: 分页查询
    * @author    hjx 
    * @date       2013-1-30 
    * @param createTime  开始时间
    * @param endTime     结束时间
    * @param bugLevel    级别
    * @param expurgator  修订人
    * @param status      状态
    * @param moduleId    模块
    * @param projectId   项目
    * @param page        第几页
    * @param size        每页多少条
    * @return
    */
	@Transactional(readOnly = true)
    public List<SoftBugEntity> getPage(String bugLevel, String expurgator,String status,String moduleId,String projectId, String userType, int page, int size) {
    	return softBugDao.getPage(bugLevel, expurgator, status, moduleId,projectId,userType,page,size);
    }
    
    /**
    * Title: getCount
    * Description:查询的记录数
    * @author    hjx 
    * @date       2013-1-30 
    * @param createTime  开始时间
    * @param endTime     结束时间
    * @param bugLevel    级别
    * @param expurgator  修订人
    * @param status      状态
    * @param moduleId    模块
    * @param projectId   项目
    * @return
    */
	@Transactional(readOnly = true)
    public long getCount( String bugLevel, String expurgator,String status,String moduleId,String projectId, String userType) {
    	return softBugDao.getCount( bugLevel, expurgator,status,moduleId,projectId,userType);
    }

	/**
	* Title: getNextStatus
	* Description:获取bug的下一状态
	* @author    hjx 
	* @date       2013-2-16 
	* @param status
	* @return
	 */
	public String getNextStatus(String status) {
		if("new".equals(status))
		{
			return "open";
		}else if("open".equals(status)||"reopen".equals(status))
		{
			return "fix";
		}else if("fix".equals(status))
		{
			return "close";
		}else if("reject".equals(status))
		{
			return "reject";
		}else 
		{
			return "close";
		}
	}
	
	/**
	* Title: getNextStatusItem
	* Description:获取接下来的可能的状态
	* @author    hjx 
	* @date       2013-2-16 
	* @param status
	* @param itemList
	* @return
	*/
	public List<SysDictItemEntity> getNextStatusItem(String status, List<SysDictItemEntity> itemList) {
		List<SysDictItemEntity> tempList = new ArrayList<SysDictItemEntity>();
		if("new".equals(status))
		{
			for(SysDictItemEntity item : itemList)
			{
				if(item.getValue().equals("open")||item.getValue().equals("reject"))
				{
					tempList.add(item);
				}
			}
			return tempList;
		
		}else if("open".equals(status)||"reopen".equals(status))
		{
			for(SysDictItemEntity item : itemList)
			{
				if(item.getValue().equals("fix"))
				{
					tempList.add(item);
				}
			}
			return tempList;
		
		}else if("fix".equals(status))
		{
			for(SysDictItemEntity item : itemList)
			{
				if(item.getValue().equals("close")||item.getValue().equals("reopen"))
				{
					tempList.add(item);
				}
			}
			return tempList;
		}else 
		{
			return null;
		}
	}

	public boolean getByModuleId(String id) {
		
		return softBugDao.getByModuleId(id);
	}
}
